package zhyh.kit.excel.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelField {

	/**
	 * <h4>当前属性仅导出</h4>
	 */
	boolean exportOnly() default false;

	/**
	 * <h4>当前属性仅导入</h4>
	 */
	boolean importOnly() default false;

	/**
	 * <h4>当前属性在Excel中的位置,从0开始,属性优先于cellAt</h4>
	 */
	int exportCellAt() default -1;

	/**
	 * <h4>当前属性在Excel中的位置,从0开始,属性优先于cellAt</h4>
	 */
	int importCellAt() default -1;

	/**
	 * <h4>是否不可为空</h4>
	 */
	boolean isNotNull() default false;

	/**
	 * <h4>合法值列表(int)</h4>
	 */
	int[] valueOfInteger() default {};

	/**
	 * <h4>合法值区间(int)</h4>
	 * 如不为空，只能有两个元素，即最小值(含)和最大值(含)
	 * @return
	 */
	int[] sectionOfInteger() default {};

	/**
	 * <h4>合法值列表(String)</h4>
	 */
	String[] valueOfString() default {};

	/**
	 * <h4>合法值列表(double)</h4>
	 */
	double[] valueOfDouble() default {};

	/**
	 * <h4>合法值区间(double)</h4>
	 * 如不为空，只能有两个元素，即最小值(含)和最大值(含)
	 * @return
	 */
	double[] sectionOfDouble() default {};

	/**
	 * <h4>当前属性在Excel中的位置,从0开始</h4>
	 */
	int cellAt();

	/**
	 * <h4>默认日期格式化方式</h4>
	 */
	String dateFormat() default "yyyy-MM-dd hh:mm:ss";

	/**
	 * <h4>是否需要自定义格式化，如需要需提供 属性名+EnCode() 方法,返回值为String型(用以导出)</h4>
	 * <h4>并定义反格式化方法 属性名+DeCode(String arg) 方法, 返回值为当前字段类型(用以导入)</h4>
	 */
	boolean format() default false;

}
